Increasingly, in complex large-scale computing environments, dynamic user requests often result in many serialized RPCs to different backends. These RPCs are very expensive for engineers to optimize; optimizations add significant technical complexity and maintenance cost; and often add latency to systems.
Even with perfectly optimized hand-coding to parallelize a portion of these RPCs, they are still typically many serialized blocks of RPCs. This causes increased latency and the cost of mitigating said latency is very high in terms of engineering time and system complexity.